A business entity that provides Internet services (e.g., a search engine, a data center, etc.) through a server-client network usually deploys intermediary devices between the servers and client devices to manage and control the network traffic to enhance the client-user experience. These intermediary devices may be an application delivery controller, a wide area network optimizer controller, a gateway, a service control engine, etc., or any other application optimization tools. Such an intermediary devices may be configured to perform a wide range of functionalities for purposes of application optimization and acceleration, such as load balancing (e.g., for layer 2, layer 4, or layer 7 services), caching, quality of service (QoS) processes, traffic steering, security protection, content transformation, health monitoring, protocol interfacing, etc.
To ensure network service reliability, a cluster of functionally equivalent intermediary devices can be connected and configured to provide failover capabilities by virtue of redundancy. With respect to a service optimization function and/or a service user group, one device (e.g., computer system) in a cluster is set to an active mode at a time and operates to perform the function while others remain in a hot standby mode. In the scenarios that the active device experiences a situation making it inefficient or impossible to perform the function to respond to client requests, one of the standby devices can automatically take over to maintain an uninterrupted operation to serve the client request.
Conventionally, the failover of an intermediary device cluster is determined by a priority rank. For example, a standby device with the highest priority becomes the next active device in case of a failover. The priority rank can change dynamically based on a health check of a few failover events defined for corresponding resources associated with the devices.
However administrators have only limited ability to configure such a failover control process. The detected failover events are treated indiscriminatorily without taking into account the personalities of the corresponding delivery service provided, or user policies. Thus, an active device and the associated resources that are selected according to the priority rank may not be the most efficient device to deliver the service.